Skip to content

Fix iOS trim analyzer warnings and Android 16KB ELF page alignment - #108

Merged
winnerspiros merged 16 commits into
masterfrom
copilot/upgrade-project-to-latest-net
Mar 27, 2026
Merged

Fix iOS trim analyzer warnings and Android 16KB ELF page alignment#108
winnerspiros merged 16 commits into
masterfrom
copilot/upgrade-project-to-latest-net

Conversation

Copilot AI commented Mar 27, 2026

Copy link
Copy Markdown

iOS CI builds fail with IL2026/IL2067 warnings from Newtonsoft.Json reflection usage treated as errors. Android builds emit XA0141 warnings for libveldrid-spirv.so shipping with 4KB ELF LOAD alignment instead of 16KB required by Android 16+.

iOS trim analyzer (IL2026/IL2067)

SuppressTrimAnalysisWarnings=true only suppresses the ILLink tool warnings, not the Roslyn-based trim analyzer that runs at compile time. Added EnableTrimAnalyzer=false and NoWarn for IL2026/IL2067 in osu.iOS.props.

Android 16KB page-size alignment

Rather than just suppressing XA0141, added build/PatchElfPageSize.targets — an MSBuild inline C# task that rewrites 64-bit ELF LOAD segments from 4KB to 16KB alignment in-place:

  • Parses ELF headers, inserts padding so file_offset % 0x4000 == vaddr % 0x4000, updates p_align, p_offset, sh_offset
  • Idempotent — already-aligned files are skipped
  • File-based mutex handles parallel MSBuild nodes writing the same NuGet-cached .so
  • Double-checks alignment after acquiring lock (another node may have patched while waiting)
  • AndroidPageSize16KBCompatibilityCheck=false retained as fallback since the SDK validation target can race ahead of the patch target
<!-- osu.Android.props -->
<AndroidPageSize16KBCompatibilityCheck>false</AndroidPageSize16KBCompatibilityCheck>
<Import Project="$(MSBuildThisFileDirectory)build\PatchElfPageSize.targets" />

TODO: Remove both the patcher and suppression once ppy.Veldrid.SPIRV ships 16KB-aligned native libraries.


✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.

Copilot AI and others added 3 commits March 27, 2026 10:18
- global.json: SDK 8.0.100 → 10.0.100
- Directory.Build.props: LangVersion 12.0 → 14.0
- All 34 csproj files: net8.0 → net10.0 (including android/ios variants)
- All CI workflows: dotnet-version 8.0.x → 10.0.x
- Humanizer: 2.14.1 → 3.0.10 (was held back for .NET 9+ requirement)
- Fixed Humanizer.Localisation → Humanizer namespace migration

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/f7af1d57-4873-47a0-96fb-6b14be21812a

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
- Replace 9 object lock fields with System.Threading.Lock (better perf)
- Convert 240 Array.Empty<T>() calls to [] collection expressions
- Remove unnecessary legacy packages (System.IO.FileSystem.Primitives,
  System.Runtime.InteropServices, System.Runtime.Handles,
  System.ComponentModel.Annotations, Microsoft.Win32.Registry)
- Fix type inference edge cases where [] needs explicit typing

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/f7af1d57-4873-47a0-96fb-6b14be21812a

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/f7af1d57-4873-47a0-96fb-6b14be21812a

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
- Fix Task.FromResult([]) type inference in Carousel.cs and BeatmapCarousel.cs
- Fix ?? [] operator mismatch in TestMultiplayerClient.cs
- Fix ambiguous ChangeUserMods([]) call in TestSceneMultiplayerUserModDisplay.cs

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/f1bab7a5-5dbf-4dd9-a3f1-be7d5abae1a5

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
Copilot stopped work on behalf of winnerspiros due to an error March 27, 2026 12:24
Copilot AI and others added 2 commits March 27, 2026 13:03
…054/0062/0260), Android CS0433 NotNullAttribute ambiguity, iOS Xcode 26 runner, AndroidHttpClientHandlerType, MAUI Essentials update

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/124e253f-a180-470b-855f-ff235f45e2cd

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…ix iOS MAUI Essentials

- AutoMapper 13.0.1→16.1.1: fixes HIGH severity CVE GHSA-rvv3-g6hj-g44x (DoS via uncontrolled recursion)
- Migrate MapperConfiguration to new 2-arg constructor (NullLoggerFactory.Instance)
- SharpCompress 0.47.0→0.47.3 (patch bugfixes)
- iOS Microsoft.Maui.Essentials 8.0.3→10.0.51 (.NET 10 compat)

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/124e253f-a180-470b-855f-ff235f45e2cd

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
Copilot AI changed the title [WIP] Update project to latest .NET version with optimizations .NET 10 upgrade: fix CI failures, resolve AutoMapper CVE, update dependencies Mar 27, 2026
Copilot AI requested a review from winnerspiros March 27, 2026 13:50
Copilot AI and others added 2 commits March 27, 2026 14:30
…n native bridge static constructors

- NUnit3TestAdapter 6.1.0→6.2.0 across all 11 test projects
- Moq 4.17.2→4.20.72 on Android/iOS test projects (aligns with desktop)
- Bogus 35.6.2→35.6.5 on Android/iOS test projects (aligns with desktop)
- OboeAudioBridge/VulkanProbe: use DllImportSearchPath.ApplicationDirectory in NativeLibrary.TryLoad to avoid Samsung device crashes from system path scanning

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/797cbeef-49e9-4439-bcff-0e61bf03de70

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…yntax

- update-web-mod-definitions.yml: actions/checkout@v4 → v6 (3 instances)
- deploy.yml: deprecated ::set-output → $GITHUB_OUTPUT syntax

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/797cbeef-49e9-4439-bcff-0e61bf03de70

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…, InspectCode v0.12, create-pull-request v8, test-reporter v2

Critical fix: deploy.yml echo was missing >> "$GITHUB_OUTPUT", causing
empty step outputs and broken NuGet pack/publish pipeline.

Action updates:
- JetBrains/ReSharper-InspectCode: v0.11 → v0.12 (2025.3.3)
- peter-evans/create-pull-request: v6 → v8 (retry plugin, checkout@v6 compat)
- dorny/test-reporter: v2.6.0 → v2 (auto-update minor versions)

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/a4bd5309-6567-4797-b6e9-73b464e23bf7

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
Copilot AI changed the title .NET 10 upgrade: fix CI failures, resolve AutoMapper CVE, update dependencies .NET 10 migration: fix deploy pipeline, update all GitHub Actions, harden Android crash safety Mar 27, 2026
…files)

- Fix Android XA1032: AndroidHttpClientHandlerType back to
  Xamarin.Android.Net.AndroidMessageHandler (correct for SDK 36.1.43)
- Fix iOS NETSDK1144: Add MtouchLink=None for Debug, suppress trim
  analysis warnings for Release (reflection-heavy codebase)
- Fix Code Quality: dotnet format fixes IDE0005/0018/0019/0031/0032/
  0054/0062/0260 across 392 files

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/033e5847-1348-4d63-b60a-24a3b90f89ea

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
… 34→36

- Enable RunAOTCompilation + AndroidEnableProfiledAot in Release for
  lower latency gameplay on Samsung S23 Ultra and similar devices
- Suppress trim analysis warnings in Release (reflection-heavy codebase)
- Upgrade AndroidManifest targetSdkVersion from 34 to 36 across all 6
  Android projects to match .NET 10 Android SDK 36 and eliminate XA4211

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/033e5847-1348-4d63-b60a-24a3b90f89ea

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
Copilot AI changed the title .NET 10 migration: fix deploy pipeline, update all GitHub Actions, harden Android crash safety Fix CI failures: Android XA1032, iOS trimmer, code style; add Android AOT + SDK 36 Mar 27, 2026
Copilot AI requested a review from winnerspiros March 27, 2026 16:33
…ullability/CA1422, Android 16KB warnings

- Fix IDE0017 (object init), IDE0027 (expression body), IDE0270 (null
  coalesce throw), IDE0055 (formatting) across 20 files
- Fix iOS CA1422: use EffectiveGeometry.InterfaceOrientation on iOS 26+
  with fallback for older versions in AppDelegate.cs
- Fix iOS CS8767: suppress nullability mismatch from framework base class
- Suppress iOS trim analysis warnings in Debug (CI builds Debug)
- Suppress Android 16KB page-size warnings from ppy.Veldrid.SPIRV

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/231bc799-fa7e-4d2a-8238-b060245fd5e6

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
Copilot AI changed the title Fix CI failures: Android XA1032, iOS trimmer, code style; add Android AOT + SDK 36 Fix CI failures: code quality, iOS/Android build errors, and Android optimizations Mar 27, 2026
Copilot AI requested a review from winnerspiros March 27, 2026 17:19

if (GetFileInformationByHandle(handle, out fileInfo))
if (GetFileInformationByHandle(handle, out var fileInfo))

Check warning

Code scanning / InspectCode

Incorrect blank lines: Blank lines are redundant elsewhere Warning

Blank lines are redundant, expected maximum 1 instead of 2

if (!IsLoaded)
return;

updateMessageContent();
}
}
} = null!;

Check warning

Code scanning / InspectCode

Member initialized value ignored Warning

Property initializer value ignored during initialization
int.TryParse(match.Groups[@"minutes"].Value, out timeMin);
int.TryParse(match.Groups[@"seconds"].Value, out timeSec);
int.TryParse(match.Groups[@"milliseconds"].Value, out timeMsec);
int.TryParse(match.Groups[@"minutes"].Value, out int timeMin);

Check warning

Code scanning / InspectCode

Incorrect blank lines: Blank lines are redundant elsewhere Warning

Blank lines are redundant, expected maximum 1 instead of 2

if (opponentHand.RemoveCard(item, out card, out var drawQuad))
if (opponentHand.RemoveCard(item, out var card, out var drawQuad))

Check warning

Code scanning / InspectCode

Incorrect blank lines: Incorrect number of blank lines near braces Warning

Incorrect number of blank lines near braces, expected maximum 0 instead of 1

if (playerHand.RemoveCard(item, out card, out var drawQuad))
if (playerHand.RemoveCard(item, out var card, out var drawQuad))

Check warning

Code scanning / InspectCode

Incorrect blank lines: Incorrect number of blank lines near braces Warning

Incorrect number of blank lines near braces, expected maximum 0 instead of 1
Comment thread osu.Desktop/NVAPI.cs
InitializeDelegate initialize;
getDelegate(0x0150E828, out initialize);
getDelegate(0x0150E828, out
InitializeDelegate initialize);

Check warning

Code scanning / InspectCode

Incorrect indent: Missing indent/outdent elsewhere Warning

Line is not indented relative to the previous line, expected indent 4 spaces
teamDisplay.ShowScore = value;
}
}
get => teamDisplay?.ShowScore ?? false; set => teamDisplay?.ShowScore = value;

Check warning

Code scanning / InspectCode

Incorrect line breaks: Line break is missing elsewhere Warning

Line break is missing
if (rulesetInstance == null)
throw new RulesetLoadException("Creating ruleset instance failed when attempting to create playable beatmap.");

var rulesetInstance = ruleset.CreateInstance() ?? throw new RulesetLoadException("Creating ruleset instance failed when attempting to create playable beatmap.");

Check warning

Code scanning / InspectCode

'??' condition is known to be null or not null Warning

'??' left operand is never 'null'
if (assemblyQualifiedName == null)
throw new ArgumentException($"{type}'s assembly-qualified name is null. Ensure that it is a concrete type and not a generic type parameter.", nameof(type));

string? assemblyQualifiedName = type.AssemblyQualifiedName ?? throw new ArgumentException($"{type}'s assembly-qualified name is null. Ensure that it is a concrete type and not a generic type parameter.", nameof(type));

Check warning

Code scanning / InspectCode

Variable can be declared as non-nullable Warning

'assemblyQualifiedName' can be declared as non-nullable
if (LabelTextFlowContainer != null)
LabelTextFlowContainer.Padding = value;
}
get => LabelTextFlowContainer?.Padding ?? new MarginPadding(); set => LabelTextFlowContainer?.Padding = value;

Check warning

Code scanning / InspectCode

Incorrect line breaks: Line break is missing elsewhere Warning

Line break is missing
Copilot AI and others added 2 commits March 27, 2026 17:57
…d 16KB comment

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/1fb2b183-fabf-4983-9c1a-f0ae18912292

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
…im analyzer warnings

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/1fb2b183-fabf-4983-9c1a-f0ae18912292

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
Copilot AI changed the title Fix CI failures: code quality, iOS/Android build errors, and Android optimizations Fix CI failures: code style, iOS trim analyzer, Android 16KB ELF alignment Mar 27, 2026
Copilot AI requested a review from winnerspiros March 27, 2026 18:44
…uppression as fallback

Agent-Logs-Url: https://github.com/winnerspiros/osu/sessions/d87f8128-0f76-4738-a1c6-f3f37e742734

Co-authored-by: winnerspiros <1675249+winnerspiros@users.noreply.github.com>
Copilot AI changed the title Fix CI failures: code style, iOS trim analyzer, Android 16KB ELF alignment Fix iOS trim analyzer warnings and Android 16KB ELF page alignment Mar 27, 2026
@winnerspiros
winnerspiros marked this pull request as ready for review March 27, 2026 20:18
Copilot AI review requested due to automatic review settings March 27, 2026 20:18
@winnerspiros
winnerspiros merged commit 5928f68 into master Mar 27, 2026
4 of 15 checks passed

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR aims to resolve CI/build warnings treated as errors on iOS (trim analyzer) and Android (16KB ELF page alignment), but it also performs a broad platform/tooling upgrade (net10/C# 14) and widespread C# syntax modernisation across rulesets, tests, and workflows.

Changes:

  • Updates projects, CI, and tooling to .NET 10 / C# 14 and refreshes some package versions.
  • Modernises C# code across the repository (collection expressions [], property patterns, ?., local functions static, field keyword).
  • Adjusts Android build configuration (props, manifests, native library load path) in support of newer Android constraints mentioned in the PR description.

Reviewed changes

Copilot reviewed 299 out of 826 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
osu.Game.Tests/Visual/UserInterface/TestSceneModCustomisationPanel.cs Replace empty array creation with collection expressions.
osu.Game.Tests/Visual/UserInterface/TestSceneLogoTrackingContainer.cs Minor using directive reordering.
osu.Game.Tests/Visual/UserInterface/TestSceneFirstRunSetupOverlay.cs Replace Enumerable.Empty<T>() with collection expression.
osu.Game.Tests/Visual/UserInterface/TestSceneDeleteLocalScore.cs Replace empty enumerable fallback with collection expression.
osu.Game.Tests/Visual/UserInterface/TestSceneDashboardBeatmapListing.cs Using order adjustments.
osu.Game.Tests/Visual/UserInterface/TestSceneCommentRepliesButton.cs Using order adjustments.
osu.Game.Tests/Visual/UserInterface/TestSceneButtonsInput.cs Using order adjustments.
osu.Game.Tests/Visual/UserInterface/TestSceneBeatmapAttributeText.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/TestMultiplayerComponents.cs Using order adjustments.
osu.Game.Tests/Visual/SongSelect/TestSceneSongSelectFiltering.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/SongSelect/TestSceneSongSelect.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/SongSelect/TestSceneFooterButtonMods.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/SongSelect/TestSceneDifficultyStatisticsDisplay.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapRecommendations.cs Make local function static.
osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapMetadataWedge.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboardWedge.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapLeaderboardScore.cs Simplify null-check to null-conditional assignment.
osu.Game.Tests/Visual/SongSelect/TestSceneBeatmapCarouselUpdateHandling.cs Use prefix increment.
osu.Game.Tests/Visual/SongSelect/SongSelectComponentsTestScene.cs Simplify null-check via null-conditional.
osu.Game.Tests/Visual/Settings/TestSceneSettingsItem.cs Using order adjustments.
osu.Game.Tests/Visual/Ranking/TestSceneStatisticsPanel.cs Using order adjustments.
osu.Game.Tests/Visual/Ranking/TestSceneSimpleStatisticTable.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Ranking/TestSceneResultsScreen.cs Simplify null-check via null-conditional.
osu.Game.Tests/Visual/Online/TestSceneVotePill.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneUserRequest.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneUserProfilePreviousUsernamesDisplay.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Online/TestSceneUserProfileOverlay.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Online/TestSceneUserHistoryGraph.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Online/TestSceneTotalCommentsCounter.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneStandAloneChatDisplay.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneShowMoreButton.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneRankingsTables.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneRankingsCountryFilter.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneProfileRulesetSelector.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestScenePlayHistorySubsection.cs Using order adjustments; replace empty array with collection expressions.
osu.Game.Tests/Visual/Online/TestSceneOnlineBeatmapListingOverlay.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneOfflineCommentsContainer.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneNewsSidebar.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Online/TestSceneNewsHeader.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneNewsCard.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneLeaderboardScopeSelector.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneLeaderboardModSelector.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneKudosuHistory.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneHomeNewsPanel.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneGraph.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Online/TestSceneDrawableComment.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Online/TestSceneCommentsContainer.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs Using order adjustments.
osu.Game.Tests/Visual/Online/TestSceneBeatmapSetOverlay.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Online/TestSceneBeatmapListingOverlay.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Online/TestSceneAdvancedStats.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Navigation/TestSceneSongSelectNavigation.cs Use property-pattern is ResultsScreen { IsLoaded: true }.
osu.Game.Tests/Visual/Navigation/TestSceneSkinEditorNavigation.cs Using order adjustments.
osu.Game.Tests/Visual/Navigation/TestSceneScreenNavigation.cs Use property-pattern is LoungeSubScreen { IsLoaded: true }.
osu.Game.Tests/Visual/Multiplayer/TestSceneTeamVersus.cs Replace casts with property-patterns.
osu.Game.Tests/Visual/Multiplayer/TestScenePlaylistsSongSelect.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerPlayer.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSubScreen.cs Change empty mods passed to ChangeUserMods().
osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayerMatchSongSelect.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Multiplayer/TestSceneMultiplayer.cs Use property-pattern is MultiSpectatorScreen { IsLoaded: true }.
osu.Game.Tests/Visual/Multiplayer/TestSceneMultiSpectatorScreen.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Menus/TestSceneToolbarRulesetSelector.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Menus/TestSceneToolbar.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Matchmaking/TestSceneBeatmapSelectGrid.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Gameplay/TestSceneStoryboardSamplePlayback.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableHUDOverlay.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Gameplay/TestSceneSkinnableDrawable.cs Replace cast-null check with property-pattern.
osu.Game.Tests/Visual/Gameplay/TestSceneSkinEditor.cs Replace casts with property-patterns.
osu.Game.Tests/Visual/Gameplay/TestSceneScrollingHitObjects.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Gameplay/TestSceneReplayDownloadButton.cs Using order adjustments.
osu.Game.Tests/Visual/Gameplay/TestSceneReplay.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Gameplay/TestScenePoolingRuleset.cs Use static local function; replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Gameplay/TestScenePlayerMaxDimensions.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Gameplay/TestScenePlayerLocalScoreImport.cs Use property-pattern; make local function static.
osu.Game.Tests/Visual/Gameplay/TestSceneHUDOverlay.cs Replace Array.Empty<T>() with collection expressions; simplify null-check.
osu.Game.Tests/Visual/Gameplay/TestSceneFailJudgement.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Gameplay/TestSceneFailAnimation.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Visual/Gameplay/TestSceneDrawableScrollingRuleset.cs Using order adjustments.
osu.Game.Tests/Visual/Gameplay/TestSceneDefaultSongProgressGraph.cs Simplify null-check with null-conditional.
osu.Game.Tests/Visual/Gameplay/TestSceneBeatmapSkinFallbacks.cs Use is not Container pattern.
osu.Game.Tests/Visual/Gameplay/TestSceneBeatmapMetadataDisplay.cs Convert backing field to auto-property with field usage; adjust check.
osu.Game.Tests/Visual/Editing/TestSceneHitObjectSampleAdjustments.cs Using order adjustments.
osu.Game.Tests/Visual/Editing/TestSceneHitObjectComposer.cs Make local function static.
osu.Game.Tests/Visual/Beatmaps/TestSceneBeatmapSetOnlineStatusPill.cs Use pill.Status++.
osu.Game.Tests/Visual/Background/TestSceneTrianglesV2Background.cs Using order adjustments.
osu.Game.Tests/Visual/Background/TestSceneTrianglesBackground.cs Using order adjustments.
osu.Game.Tests/Visual/Background/TestSceneTriangleBorderShader.cs Convert backing fields to auto-properties with field usage; update state access.
osu.Game.Tests/Utils/NamingUtilsTest.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Tests/Testing/TestSceneRulesetDependencies.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Skins/SkinDeserialisationTest.cs Replace cast-check with property-pattern.
osu.Game.Tests/NonVisual/TestSceneUpdateManager.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Tests/NonVisual/TestSceneTimedDifficultyCalculation.cs Replace Enumerable.Empty<T>()/Array.Empty<T>() with collection expressions.
osu.Game.Tests/Mods/TestCustomisableModRuleset.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Mods/ModUtilsTest.cs Replace Array.Empty<T>() with collection expressions; inline out var.
osu.Game.Tests/Gameplay/TestSceneDrainingHealthProcessor.cs Using order adjustments.
osu.Game.Tests/Editing/Checks/CheckPreviewTimeTest.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Editing/Checks/CheckInconsistentSettingsTest.cs Using order adjustments.
osu.Game.Tests/Editing/Checks/CheckBackgroundQualityTest.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Database/TestRealmKeyBindingStore.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Tests/Database/RulesetStoreTests.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Database/RealmTest.cs Make local function static.
osu.Game.Tests/Beatmaps/WorkingBeatmapTest.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Beatmaps/TestSceneBeatmapDifficultyCache.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests/Beatmaps/IO/OszArchiveReaderTest.cs Using order adjustments.
osu.Game.Tests/Beatmaps/IO/LegacyBeatmapExporterTest.cs Make local functions static.
osu.Game.Tests/Beatmaps/Formats/LegacyStoryboardDecoderTest.cs Using order adjustments.
osu.Game.Tests/Beatmaps/Formats/LegacyBeatmapDecoderTest.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Tests.iOS/osu.Game.Tests.iOS.csproj Switch to net10.0-ios; bump Bogus/Moq.
osu.Game.Tests.Android/osu.Game.Tests.Android.csproj Switch to net10.0-android; bump Bogus/Moq.
osu.Game.Tests.Android/AndroidManifest.xml Increase Android target SDK.
osu.Game.Rulesets.Taiko/osu.Game.Rulesets.Taiko.csproj Switch to net10.0.
osu.Game.Rulesets.Taiko/UI/TaikoPlayfield.cs Using order adjustments.
osu.Game.Rulesets.Taiko/UI/TaikoHitTarget.cs Using order adjustments.
osu.Game.Rulesets.Taiko/UI/HitExplosion.cs Using order adjustments.
osu.Game.Rulesets.Taiko/UI/DrumTouchInputArea.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Taiko/UI/DrumSampleTriggerSource.cs Use is not pattern.
osu.Game.Rulesets.Taiko/UI/DrumSamplePlayer.cs Use gameplay clock property-pattern.
osu.Game.Rulesets.Taiko/UI/DrawableTaikoRuleset.cs Replace Enumerable.Empty<T>() with collection expressions; simplify null-check.
osu.Game.Rulesets.Taiko/TaikoRuleset.cs Using order adjustments; replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Taiko/Skinning/Legacy/LegacyTaikoScroller.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Taiko/Skinning/Legacy/LegacySwell.cs Using order adjustments.
osu.Game.Rulesets.Taiko/Skinning/Legacy/LegacyKiaiGlow.cs Simplify event hookup/teardown with null-conditional.
osu.Game.Rulesets.Taiko/Skinning/Default/DefaultHitExplosion.cs Use property-pattern.
osu.Game.Rulesets.Taiko/Skinning/Default/CirclePiece.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Taiko/Skinning/Argon/TaikoArgonSkinTransformer.cs Simplify null-check with null-conditional.
osu.Game.Rulesets.Taiko/Skinning/Argon/ArgonHitExplosion.cs Use property-pattern.
osu.Game.Rulesets.Taiko/Skinning/Argon/ArgonFlourishTriggerSource.cs Use is not pattern.
osu.Game.Rulesets.Taiko/Skinning/Argon/ArgonDrumSampleTriggerSource.cs Use is not pattern.
osu.Game.Rulesets.Taiko/Replays/TaikoFramedReplayInputHandler.cs Using order adjustments.
osu.Game.Rulesets.Taiko/Replays/TaikoAutoGenerator.cs Using order adjustments.
osu.Game.Rulesets.Taiko/Objects/Swell.cs Using order adjustments.
osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableTaikoHitObject.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableSwell.cs Using order adjustments; use gameplay clock property-pattern.
osu.Game.Rulesets.Taiko/Objects/Drawables/DrawableDrumRoll.cs Using order adjustments.
osu.Game.Rulesets.Taiko/Mods/TaikoModSingleTap.cs Using order adjustments.
osu.Game.Rulesets.Taiko/Mods/TaikoModDifficultyAdjust.cs Make local function static.
osu.Game.Rulesets.Taiko/Mods/TaikoModConstantSpeed.cs Using order adjustments.
osu.Game.Rulesets.Taiko/Edit/Checks/CheckTaikoAbnormalDifficultySettings.cs Inline out var.
osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/TaikoDifficultyHitObject.cs Using order adjustments.
osu.Game.Rulesets.Taiko/Difficulty/Preprocessing/Colour/Data/MonoStreak.cs Using order adjustments.
osu.Game.Rulesets.Taiko/Difficulty/Evaluators/StaminaEvaluator.cs Use is not pattern inline.
osu.Game.Rulesets.Taiko/Beatmaps/TaikoBeatmapConverter.cs Using order adjustments.
osu.Game.Rulesets.Taiko.Tests/osu.Game.Rulesets.Taiko.Tests.csproj Switch to net10.0; bump NUnit adapter.
osu.Game.Rulesets.Taiko.Tests/TaikoBeatmapConversionTest.cs Use property-patterns.
osu.Game.Rulesets.Taiko.Tests/Skinning/TestSceneTaikoKiaiGlow.cs Using order adjustments.
osu.Game.Rulesets.Taiko.Tests/Mods/TestSceneTaikoModRelax.cs Make local function static.
osu.Game.Rulesets.Taiko.Tests/Judgements/JudgementTest.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Taiko.Tests/Editor/Checks/CheckTaikoInconsistentSkipBarLineTest.cs Using order adjustments.
osu.Game.Rulesets.Taiko.Tests/Editor/Checks/CheckTaikoAbnormalDifficultySettingsTest.cs Using order adjustments.
osu.Game.Rulesets.Taiko.Tests.iOS/osu.Game.Rulesets.Taiko.Tests.iOS.csproj Switch to net10.0-ios.
osu.Game.Rulesets.Taiko.Tests.Android/osu.Game.Rulesets.Taiko.Tests.Android.csproj Switch to net10.0-android; add reference alias workaround target.
osu.Game.Rulesets.Taiko.Tests.Android/AndroidManifest.xml Increase Android target SDK.
osu.Game.Rulesets.Osu/osu.Game.Rulesets.Osu.csproj Switch to net10.0.
osu.Game.Rulesets.Osu/Utils/OsuHitObjectGenerationUtils.cs Using order adjustments.
osu.Game.Rulesets.Osu/UI/ReplayAnalysisOverlay.cs Simplify null-check assignments.
osu.Game.Rulesets.Osu/UI/Cursor/CursorTrail.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Osu/UI/Cursor/CursorRippleVisualiser.cs Use gameplay clock property-pattern.
osu.Game.Rulesets.Osu/Skinning/SliderBody.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Osu/Skinning/NonPlayfieldSprite.cs Make texture scale adjustment null-safe.
osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySliderHeadHitCircle.cs Simplify event unhook with null-conditional.
osu.Game.Rulesets.Osu/Skinning/Legacy/LegacySliderBall.cs Simplify event hook with null-conditional.
osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyMainCirclePiece.cs Simplify event unhook with null-conditional.
osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyCursorTrail.cs Make texture scale adjustment null-safe.
osu.Game.Rulesets.Osu/Skinning/Legacy/LegacyCursorParticles.cs Make texture scale adjustment null-safe.
osu.Game.Rulesets.Osu/Skinning/Default/DrawableSliderPath.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Osu/Skinning/Default/DefaultSliderBall.cs Simplify event unhook with null-conditional.
osu.Game.Rulesets.Osu/Skinning/Argon/ArgonSliderBall.cs Simplify event unhook with null-conditional.
osu.Game.Rulesets.Osu/Replays/OsuAutoGeneratorBase.cs Using order adjustments.
osu.Game.Rulesets.Osu/Replays/OsuAutoGenerator.cs Using order adjustments.
osu.Game.Rulesets.Osu/OsuRuleset.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Osu/OsuInputManager.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Osu/Objects/Spinner.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Osu/Objects/Slider.cs Convert backing fields to auto-properties with field usage; null-conditional updates.
osu.Game.Rulesets.Osu/Objects/OsuHitObject.cs Simplify null-check with null-conditional.
osu.Game.Rulesets.Osu/Objects/Drawables/DrawableSliderTick.cs Using order adjustments.
osu.Game.Rulesets.Osu/Objects/Drawables/DrawableOsuHitObject.cs Replace empty enumerable with collection expression; refactor cached input manager storage.
osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPointLifetimeEntry.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Osu/Objects/Drawables/Connections/FollowPoint.cs Using order adjustments.
osu.Game.Rulesets.Osu/Mods/OsuModStrictTracking.cs Use gameplay clock property-pattern.
osu.Game.Rulesets.Osu/Mods/OsuModHidden.cs Using order adjustments.
osu.Game.Rulesets.Osu/Mods/OsuModDifficultyAdjust.cs Use static local function; use property-pattern.
osu.Game.Rulesets.Osu/Edit/PreciseMovementPopover.cs Using order adjustments.
osu.Game.Rulesets.Osu/Edit/OsuHitObjectComposer.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Rulesets.Osu/Edit/Checks/CheckOsuAbnormalDifficultySettings.cs Inline out var.
osu.Game.Rulesets.Osu/Difficulty/Skills/Speed.cs Using order adjustments.
osu.Game.Rulesets.Osu/Difficulty/Skills/OsuStrainSkill.cs Using order adjustments.
osu.Game.Rulesets.Osu/Difficulty/OsuPerformanceCalculator.cs Using order adjustments.
osu.Game.Rulesets.Osu/Beatmaps/OsuBeatmapConverter.cs Using order adjustments.
osu.Game.Rulesets.Osu.Tests/osu.Game.Rulesets.Osu.Tests.csproj Switch to net10.0; bump NUnit adapter.
osu.Game.Rulesets.Osu.Tests/TestSceneSpinnerInput.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Osu.Tests/TestSceneSlider.cs Using order adjustments; replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Osu.Tests/TestSceneSkinFallbacks.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Osu.Tests/TestSceneHitCircleLateFade.cs Replace Array.Empty<T>() with collection expressions; object initializer refactor.
osu.Game.Rulesets.Osu.Tests/TestSceneGameplayCursorSizeChange.cs Simplify null-check with null-conditional.
osu.Game.Rulesets.Osu.Tests/TestSceneAimErrorMeter.cs Using order adjustments.
osu.Game.Rulesets.Osu.Tests/StackingTest.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Osu.Tests/Mods/TestSceneOsuModNoScope.cs Using order adjustments.
osu.Game.Rulesets.Osu.Tests/Mods/TestSceneOsuModAlternate.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Rulesets.Osu.Tests/Editor/TestSceneSliderSplitting.cs Simplify null-check with null-conditional.
osu.Game.Rulesets.Osu.Tests/Editor/Checks/CheckOsuAbnormalDifficultySettingsTest.cs Using order adjustments.
osu.Game.Rulesets.Osu.Tests.iOS/osu.Game.Rulesets.Osu.Tests.iOS.csproj Switch to net10.0-ios; bump Moq.
osu.Game.Rulesets.Osu.Tests.Android/osu.Game.Rulesets.Osu.Tests.Android.csproj Switch to net10.0-android; bump Moq; add reference alias workaround target.
osu.Game.Rulesets.Osu.Tests.Android/AndroidManifest.xml Increase Android target SDK.
osu.Game.Rulesets.Mania/osu.Game.Rulesets.Mania.csproj Switch to net10.0.
osu.Game.Rulesets.Mania/UI/ManiaPlayfield.cs Using order adjustments.
osu.Game.Rulesets.Mania/Skinning/Legacy/LegacyHitExplosion.cs Simplify null-check with null-conditional.
osu.Game.Rulesets.Mania/Skinning/Legacy/LegacyBodyPiece.cs Simplify null-checks with null-conditional.
osu.Game.Rulesets.Mania/Skinning/Argon/ManiaArgonSkinTransformer.cs Simplify null-checks with null-conditional.
osu.Game.Rulesets.Mania/Skinning/Argon/ArgonHoldNoteTailPiece.cs Simplify null-check with null-conditional.
osu.Game.Rulesets.Mania/Scoring/ManiaHitWindows.cs Convert backing fields to auto-properties with field usage; adjust multiplier calculation.
osu.Game.Rulesets.Mania/Objects/HoldNote.cs Convert backing field to auto-property with field usage; simplify null-checks.
osu.Game.Rulesets.Mania/Objects/Drawables/DrawableManiaHitObject.cs Using order adjustments.
osu.Game.Rulesets.Mania/Objects/Drawables/DrawableHoldNote.cs Use gameplay clock property-pattern.
osu.Game.Rulesets.Mania/Mods/ManiaModMirror.cs Using order adjustments.
osu.Game.Rulesets.Mania/Mods/ManiaModHoldOff.cs Using order adjustments.
osu.Game.Rulesets.Mania/Mods/ManiaModHidden.cs Using order adjustments.
osu.Game.Rulesets.Mania/MathUtils/LegacySortHelper.cs Minor loop decrement style change.
osu.Game.Rulesets.Mania/ManiaRuleset.cs Replace empty returns with collection expressions.
osu.Game.Rulesets.Mania/Edit/ManiaEditorPlayfield.cs Using order adjustments.
osu.Game.Rulesets.Mania/Edit/Checks/CheckManiaAbnormalDifficultySettings.cs Inline out var.
osu.Game.Rulesets.Mania/Edit/Blueprints/ManiaPlacementBlueprint.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Mania/Beatmaps/Patterns/Pattern.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/SpinnerPatternGenerator.cs Using order adjustments.
osu.Game.Rulesets.Mania/Beatmaps/Patterns/Legacy/HitCirclePatternGenerator.cs Using order adjustments.
osu.Game.Rulesets.Mania/Beatmaps/ManiaBeatmapConverter.cs Using order adjustments.
osu.Game.Rulesets.Mania.Tests/osu.Game.Rulesets.Mania.Tests.csproj Switch to net10.0; bump NUnit adapter.
osu.Game.Rulesets.Mania.Tests/TestSceneTimingBasedNoteColouring.cs Using order adjustments.
osu.Game.Rulesets.Mania.Tests/TestSceneStage.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Mania.Tests/TestSceneColumn.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Mania.Tests/Mods/TestSceneManiaModHoldOff.cs Using order adjustments.
osu.Game.Rulesets.Mania.Tests/ManiaSpecialColumnTest.cs Using order adjustments.
osu.Game.Rulesets.Mania.Tests/Editor/TestSceneManiaBeatSnapGrid.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Rulesets.Mania.Tests/Editor/ManiaPlacementBlueprintTestScene.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Mania.Tests/Editor/Checks/CheckManiaAbnormalDifficultySettingsTest.cs Using order adjustments.
osu.Game.Rulesets.Mania.Tests/Editor/Checks/CheckKeyCountTest.cs Using order adjustments.
osu.Game.Rulesets.Mania.Tests.iOS/osu.Game.Rulesets.Mania.Tests.iOS.csproj Switch to net10.0-ios.
osu.Game.Rulesets.Mania.Tests.Android/osu.Game.Rulesets.Mania.Tests.Android.csproj Switch to net10.0-android; add reference alias workaround target.
osu.Game.Rulesets.Mania.Tests.Android/AndroidManifest.xml Increase Android target SDK.
osu.Game.Rulesets.Catch/osu.Game.Rulesets.Catch.csproj Switch to net10.0.
osu.Game.Rulesets.Catch/UI/CatcherArea.cs Convert backing field to auto-property with field usage; use gameplay clock property-pattern.
osu.Game.Rulesets.Catch/Skinning/Legacy/LegacyCatchComboCounter.cs Use gameplay clock property-pattern.
osu.Game.Rulesets.Catch/Skinning/Default/CatchHitObjectPiece.cs Simplify null-checks with null-conditional.
osu.Game.Rulesets.Catch/Scoring/CatchHealthProcessor.cs Replace Enumerable.Empty<T>() with collection expressions.
osu.Game.Rulesets.Catch/Objects/PalpableCatchHitObject.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Catch/Objects/JuiceStream.cs Convert backing field to auto-property with field usage.
osu.Game.Rulesets.Catch/Objects/Drawables/DrawableBanana.cs Simplify null-check with null-conditional.
osu.Game.Rulesets.Catch/Objects/CatchHitObject.cs Simplify null-check with null-conditional.
osu.Game.Rulesets.Catch/Mods/CatchModNoScope.cs Using order adjustments.
osu.Game.Rulesets.Catch/Mods/CatchModMirror.cs Using order adjustments.
osu.Game.Rulesets.Catch/Mods/CatchModHardRock.cs Using order adjustments.
osu.Game.Rulesets.Catch/Mods/CatchModDifficultyAdjust.cs Make local function static.
osu.Game.Rulesets.Catch/Edit/Checks/CheckCatchAbnormalDifficultySettings.cs Inline out var.
osu.Game.Rulesets.Catch/CatchRuleset.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmapConverter.cs Using order adjustments.
osu.Game.Rulesets.Catch/Beatmaps/CatchBeatmap.cs Make local iterator static.
osu.Game.Rulesets.Catch.Tests/osu.Game.Rulesets.Catch.Tests.csproj Switch to net10.0; bump NUnit adapter.
osu.Game.Rulesets.Catch.Tests/TestSceneCatcher.cs Using order adjustments.
osu.Game.Rulesets.Catch.Tests/JuiceStreamPathTest.cs Replace Array.Empty<T>() with collection expressions.
osu.Game.Rulesets.Catch.Tests/CatchBeatmapConversionTest.cs Convert backing fields to auto-properties using field.
osu.Game.Rulesets.Catch.Tests.iOS/osu.Game.Rulesets.Catch.Tests.iOS.csproj Switch to net10.0-ios.
osu.Game.Rulesets.Catch.Tests.Android/osu.Game.Rulesets.Catch.Tests.Android.csproj Switch to net10.0-android; add reference alias workaround target.
osu.Game.Rulesets.Catch.Tests.Android/AndroidManifest.xml Increase Android target SDK.
osu.Game.Benchmarks/osu.Game.Benchmarks.csproj Switch to net10.0; bump NUnit adapter.
osu.Desktop/osu.Desktop.csproj Switch to net10.0.
osu.Desktop/OsuGameDesktop.cs Using order adjustments.
osu.Desktop/NVAPI.cs Small refactors (use nint, out var, formatting).
osu.Desktop/LegacyIpc/LegacyIpcMessage.cs Using order adjustments.
osu.Android/osu.Android.csproj Switch to net10.0-android; bump MAUI Essentials.
osu.Android/Native/VulkanProbe.cs Restrict native library search path.
osu.Android/Native/OboeAudioBridge.cs Restrict native library search path.
osu.Android/AndroidManifest.xml Increase Android target SDK.
osu.Android.props Adjust Android handler type, add 16KB page-size suppression + patch import + release AOT/trim settings.
global.json Pin repository SDK to 10.0.100.
Templates/Rulesets/ruleset-scrolling-example/osu.Game.Rulesets.Pippidon/osu.Game.Rulesets.Pippidon.csproj Switch template to net10.0.
Templates/Rulesets/ruleset-scrolling-example/osu.Game.Rulesets.Pippidon/PippidonRuleset.cs Replace Array.Empty<T>() with collection expressions.
Templates/Rulesets/ruleset-scrolling-example/osu.Game.Rulesets.Pippidon/PippidonDifficultyCalculator.cs Replace empties with collection expressions.
Templates/Rulesets/ruleset-scrolling-example/osu.Game.Rulesets.Pippidon.Tests/osu.Game.Rulesets.Pippidon.Tests.csproj Switch template tests to net10.0; bump NUnit adapter.
Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling/osu.Game.Rulesets.EmptyScrolling.csproj Switch template to net10.0.
Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling/UI/DrawableEmptyScrollingRuleset.cs Using order adjustments.
Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling/EmptyScrollingRuleset.cs Replace Array.Empty<T>() with collection expressions.
Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling/EmptyScrollingDifficultyCalculator.cs Replace empties with collection expressions.
Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling/Beatmaps/EmptyScrollingBeatmapConverter.cs Using order adjustments.
Templates/Rulesets/ruleset-scrolling-empty/osu.Game.Rulesets.EmptyScrolling.Tests/osu.Game.Rulesets.EmptyScrolling.Tests.csproj Switch template tests to net10.0; bump NUnit adapter.
Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon/osu.Game.Rulesets.Pippidon.csproj Switch template to net10.0.
Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon/UI/PippidonCursorContainer.cs Simplify null-check with null-conditional.
Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon/PippidonRuleset.cs Replace Array.Empty<T>() with collection expressions.
Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon/PippidonDifficultyCalculator.cs Replace empties with collection expressions.
Templates/Rulesets/ruleset-example/osu.Game.Rulesets.Pippidon.Tests/osu.Game.Rulesets.Pippidon.Tests.csproj Switch template tests to net10.0; bump NUnit adapter.
Templates/Rulesets/ruleset-empty/osu.Game.Rulesets.EmptyFreeform/osu.Game.Rulesets.EmptyFreeform.csproj Switch template to net10.0.
Templates/Rulesets/ruleset-empty/osu.Game.Rulesets.EmptyFreeform/EmptyFreeformRuleset.cs Replace Array.Empty<T>() with collection expressions.
Templates/Rulesets/ruleset-empty/osu.Game.Rulesets.EmptyFreeform/EmptyFreeformDifficultyCalculator.cs Replace empties with collection expressions.
Templates/Rulesets/ruleset-empty/osu.Game.Rulesets.EmptyFreeform.Tests/osu.Game.Rulesets.EmptyFreeform.Tests.csproj Switch template tests to net10.0; bump NUnit adapter.
Directory.Build.props Update C# language version to 14.0.
.github/workflows/update-web-mod-definitions.yml Update action versions + .NET install step.
.github/workflows/report-nunit.yml Loosen test-reporter version pin.
.github/workflows/release.yml Update .NET install step and Android target framework paths.
.github/workflows/deploy.yml Update output setting mechanism; update .NET install step.
.github/workflows/ci.yml Update .NET install step; update macOS runner label; bump InspectCode action.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +126 to 127
internal OsuInputManager OsuActionInputManager => field ??= GetContainingInputManager() as OsuInputManager;

Copilot AI Mar 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks like a compile-time error: field is only valid inside a property accessor body for an auto-property backing field, but OsuActionInputManager is an expression-bodied property with no accessor block. Reintroduce an explicit backing field (as before), or convert this to a full get { ... } accessor where field is valid (if using a compiler/language version that supports it).

Suggested change
internal OsuInputManager OsuActionInputManager => field ??= GetContainingInputManager() as OsuInputManager;
private OsuInputManager osuActionInputManager;
internal OsuInputManager OsuActionInputManager => osuActionInputManager ??= GetContainingInputManager() as OsuInputManager;

Copilot uses AI. Check for mistakes.
})));
// This would normally be done as part of the above operation with an actual server.
AddStep("disable user mods", () => MultiplayerClient.ChangeUserMods(API.LocalUser.Value.OnlineID, Array.Empty<APIMod>()));
AddStep("disable user mods", () => MultiplayerClient.ChangeUserMods(API.LocalUser.Value.OnlineID, Array.Empty<Mod>()));

Copilot AI Mar 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ChangeUserMods(...) in this context appears to operate on API mod types (this file previously passed Array.Empty<APIMod>()). Passing Array.Empty<Mod>() is likely the wrong type and will either not compile or break the intent of the test. Use an empty APIMod array/collection expression instead.

Suggested change
AddStep("disable user mods", () => MultiplayerClient.ChangeUserMods(API.LocalUser.Value.OnlineID, Array.Empty<Mod>()));
AddStep("disable user mods", () => MultiplayerClient.ChangeUserMods(API.LocalUser.Value.OnlineID, Array.Empty<APIMod>()));

Copilot uses AI. Check for mistakes.
Comment thread global.json
{
"sdk": {
"version": "8.0.100",
"version": "10.0.100",

Copilot AI Mar 27, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PR description focuses on iOS trim analyzer warning suppression and Android ELF page alignment, but the diff also includes a repo-wide migration to net10.0*, C# language version changes, CI runner/action changes, and large-scale syntax refactors. Consider splitting the framework/tooling upgrade into a separate PR or updating the PR title/description to accurately reflect the scope and risk.

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants